#

| Chapter 3 The UNIX Shell: An Overview |

## 3.5 Differing Features

The table below is a sampling of features that are different among the three shells.

sh | ksh | csh | Meaning/Action
--- | --- | --- | ---
$ | $ | % | Prompt.
|  | >! | Force redirection.
|  | >>! | Force append.
> `file` 2>&1 | > `file` 2>&1 | >& `file` | Combine stdout and stderr.
|  | { } | Expand elements in list.
` ` | `$( )` | ` ` | Substitute output of enclosed command.
$HOME | $HOME | $home | Home directory.
| ~ | ~ | Home directory symbol.
`var`=`value` | `var`=`value` | set `var`=`value` | Variable assignment.
export `var` | export `var`=`val` | setenv `var val` | Set environment variable.
| ${`nn`} |  | More than 9 args can be referenced.
"$@" | "$@" |  | All args as separate words.
$# | $# | $#argv | Number of arguments.
$? | $? | $status | Exit status.
$! | $! |  | Background exit status.
$- | $- |  | Current options.
. `file` | . `file` | `source` `file` | Read commands in `file`.
| alias `x`=`y` | alias `x` `y` | Name `x` stands for `y`.
case | case | switch/case | Choose alternatives.
| cd ~- | popd/pushd | Switch directories.
done | done | end | End a loop statement.
esac | esac | endsw | End `case` or `switch`.
exit [`n`] | exit [`n`] | exit [(`expr`)] | Exit with a status.
for/do | for/do | foreach | Loop through variables.
| print -r | glob | Ignore `echo` escapes.
hash | alias -t | hashstat | Display hashed commands (tracked aliases).
hash `cmds` | alias -t `cmds` | rehash | Remember command locations.
hash -r |  | unhash | Forget command locations.
| history | history | List previous commands.
| r | !! | Redo previous command.
| r `str` | !`str` | Redo command that starts with `str`.
| r `x`=`y` `cmd` | !`cmd`:s/`x`/`y`/ | Edit command, then execute.
`if` [ $i -eq 5 ] | if ((i==5)) | if ($i==5) | Sample `if` statement.
fi | fi | endif | End `if` statement.
ulimit | ulimit | limit | Set resource limits.
pwd | pwd | dirs | Print working directory.
read | read | $< | Read from terminal.
trap 2 | trap 2 | onintr | Ignore interrupts.
| unalias | unalias | Remove aliases.
until | until |  | Begin `until` loop.
while/do | while/do | while | Begin `while` loop.

3.4 Common Features |  | 4. The Bourne Shell and Korn Shell